package com.leo.datastruct.sort;

import java.util.Arrays;

/**
 *
 * @author xuexiaolei
 * @version 2018年02月02日
 */
public abstract class Sortable {
    private String sortMethodName;
    /**
     * 排序接口，返回值防止有非
     * @param s
     * @return
     */
    abstract void sort(int[] s);

    /**
     * 加入一些输出，方便调试
     * @param s
     */
    public void testSort(int[] s){
        System.out.println("排序前数据为：" + Arrays.toString(s));
        sort(s);
        System.out.println("排序方法为：" + this.getSortMethodName());
        System.out.println("排序后数据为：" + Arrays.toString(s));
    }

    /**
     * 交换数组的两个元素，方便代码书写
     * @param s
     * @param i
     * @param j
     */
    protected void swap(int[] s, int i, int j){
        int temp = s[i];
        s[i] = s[j];
        s[j] = temp;
    }

    public Sortable(String sortMethodName) {
        this.sortMethodName = sortMethodName;
    }

    public String getSortMethodName() {
        return sortMethodName;
    }

    public void setSortMethodName(String sortMethodName) {
        this.sortMethodName = sortMethodName;
    }
}
